﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VM.Shared.TestAttribute;

namespace HGSTestLibrary
{
    public class HGSTestClass
    {
        [ExposedMethodAttribute("")]
        public void PrintValue(out string str1, out int i1, out double d1)
        {
            str1 = "HGS";
            i1 = 666;
            d1 = 666.666;
        }
        [ExposedMethodAttribute("")]
        public string PrintValue2(out string str1, out int i1, out double d1)
        {
            str1 = "HGS";
            i1 = 666;
            d1 = 666.666;

            return "HGSTestLibrary";
        }



        [ExposedMethodAttribute("")]
        public bool 内部编译符方法测试(string 输入字符串, out string 输出字符串)
        {
            输出字符串 = string.Empty;

#if TEST
            输出字符串 = 输入字符串 + " - " + "运行了带编译符内容";
#else
            输出字符串 = 输入字符串 + " - " + "运行了无编译符内容";
#endif

            return true;
        }
#if TEST
        [ExposedMethodAttribute("")]
        public bool 外部编译符方法测试(string 输入字符串, out string 输出字符串)
        {
            输出字符串 = string.Empty;
            输出字符串 = 输入字符串 + " - " + "运行了带编译符内容";
            return true;
        }
#else
        [ExposedMethodAttribute("")]
        public bool 外部编译符方法测试(string 输入字符串, out string 输出字符串)
        {
            输出字符串 = string.Empty;
            输出字符串 = 输入字符串 + " - " + "运行了无编译符内容";
            return true;
        }
#endif
        /// <summary>
        /// 自定义返回操作结果，用来模拟测试NG的情况
        /// </summary>
        /// <param name="返回正确"></param>
        /// <returns></returns>
        [ExposedMethodAttribute("")]
        public bool 自定义返回操作结果(bool 返回正确 = true)
        {
            if (返回正确)
            {
                return true;
            }

            return false;
        }



        [ExposedMethodAttribute("")]
        public bool 返回随机Int数值(out int 返回值, bool 自定义操作结果 = true)
        {
            返回值 = -1;
            Random rd = new Random();
            int i = rd.Next(1, 1000);
            返回值 = i;

            return 自定义操作结果;
        }
        [ExposedMethodAttribute("")]
        public bool 返回随机字符串(out string 返回值, bool 自定义操作结果 = true)
        {
            返回值 = $"返回值-1";
            Random rd = new Random();
            int i = rd.Next(1, 1000);
            返回值 = $"返回值{i}";

            return 自定义操作结果;
        }


        public bool 数组参数测试(int 测试时长, out string[] 电流值列表, out bool[] 屏幕测试列表, out string 错误消息)
        {
            电流值列表 = new string[] { "1", "2", "3", "4" };
            屏幕测试列表 = new bool[] { true, false, true, false };
            错误消息 = string.Empty;

            return true;
        }
        public bool 数组参数测试(int[] 测试时长, out string[] 电流值列表, out bool[] 屏幕测试列表, out string 错误消息)
        {
            电流值列表 = new string[] { "1", "2", "3", "4" };
            屏幕测试列表 = new bool[] { true, false, true, false };
            错误消息 = string.Empty;

            return true;
        }
        public bool[] 数组返回值测试(int 测试时长, out string[] 电流值列表, out bool[] 屏幕测试列表, out string 错误消息)
        {
            电流值列表 = new string[] { "1", "2", "3", "4" };
            屏幕测试列表 = new bool[] { true, false, true, false };
            错误消息 = string.Empty;

            return new bool[] { true, false, true };
        }
    }
}
